\documentclass[a4paper,11pt]{article}

% Paquetes
\usepackage{fullpage}
\usepackage{graphicx}
\usepackage{textcomp}
\usepackage{color}
\usepackage{amsmath}
\usepackage[pdftex]{hyperref}
	\hypersetup{colorlinks=true,linkcolor= blueviolet,urlcolor= cornflowerblue}

%\usepackage{}

%\iffalse
\usepackage[spanish]{babel}
%\usepackage{ucs}
\usepackage[utf8]{inputenc}
%\usepackage[latin1]{inputenc}
%\usepackage[T1]{fontenc}
\usepackage{verbatim}
%\fi
%\usepackage{makeidx}


% ESTILO DE PÁGINA
%\pagestyle{headings}
\definecolor{mediumspringgreen}{rgb}{0,0.98,0.6} % color verde primavera
\definecolor{navyblue}{rgb}{0,0,0.5}
\definecolor{cornflowerblue}{rgb}{0.39,0.58,0.93}
\definecolor{steelblue}{rgb}{0.27,0.51,0.71}
\definecolor{royalblue2}{rgb}{0.26,0.43,0.93}
\definecolor{royalblue3}{rgb}{0.23,0.37,0.8}
\definecolor{royalblue4}{rgb}{0.15,0.25,0.55}
\definecolor{dodgerblue2}{rgb}{0.11,0.53,0.93}
\definecolor{dodgerblue3}{rgb}{0.09,0.45,0.8}
\definecolor{dodgerblue4}{rgb}{0.06,0.31,0.55}
\definecolor{steelblue1}{rgb}{0.39,0.72,1}
\definecolor{steelblue2}{rgb}{0.36,0.67,0.93}
\definecolor{steelblue3}{rgb}{0.31,0.58,0.8}
\definecolor{blueviolet}{rgb}{0.54,0.17,0.89}


%\makeidx


%FIN DE PREÁMBULO

%opening. Front Page
\title{\textcolor{blueviolet}{Tecnologías Text To Speech - Speech To Text} \\
\small{Escrito con \LaTeX}}
\author{Paula Marcela Sanz Leon}
\date{2008}

\begin{document}

\maketitle
\tableofcontents

%--------------------------------------------------------------------------------------------------------
	%MARCO LEGAL
	%Tabla de Contenidos
	%1. Legal Notices
	%
	%1.1. Copyright/License
	%1.2. Disclaimer
	%1.3. Trademarks
	%2. Forward

	%2.1. About This Document
	%2.2. Acknowledgements
	%2.3. Comments/Updates/Feedback
	%2.4. ToDo
	%2.5. Revision History


%---------------------------------------------------------------------------------------------------------

\section{Introducción}

	\subsection{Bases del Reconocimiento de Voz}

	El Reconocimiento de Voz (RV) es el proceso por el cual una computadora (u otro tipo de máquina o hardware) identifica palabras habladas. 
	Básicamente, significa 'hablarle a tu computadora' y, fundamentalmente, que ésta reconozca lo que estás diciendo.
	Las siguientes definiciones son las básicas que se necesitan para un entendimiento correcto y apropiado de la tecnología de RV.

\begin{itemize}
	\item [\textbullet] Utterance (en español significa Enunciado)

	Un enunciado es la vocalización (speaking) de una palabra o palabras que representan un único significado para la computadora.
	Los enunciados pueden ser una sola palabra, un par de palabras, una oración o múltiples oraciones, como lo es un párrafo.
	
	\item [\textbullet] Speaker Dependance o Dependencia del hablante u orador.
	
	Los sistemas dependientes del hablante son diseñados alrededor de un orador específico. Generalmente son más exactos para la persona correcta, pero mucho menos exactos para otras. Asumen que el orador hablará con un tempo y voz consistentes. Los sistemas independientes son diseñados para una variedad de oradores. Los sistemas adaptivos usualmente comienzan como sistemas independientes y utilizan técnicas de entrenamiento para adaptarse a la persona hablante con el objetivo de mejorar la exactitud del reconocimiento.
	
	\item [\textbullet] Vocabularios
	
	Vocabularios (o diccionarios) son listas de palabras o utterances que pueden ser reconocidas por el sistema RV (léase también \textquotedblleft comandos\textquotedblright).Generalmente, vocabularios más pequeños son más fáciles de reconocer, mientras que los más amplios presentan mayor grado de dificultad. 
	A diferencia de los diccionarios comunes, cada entrada no debe ser necesariamente una palabra. Ya se había mencionado que podía tratarse de una 
	oración o más. Los vocabularios más chicos pueden tener tanto como 1 o 2 enunciados reconocidos (por ejemplo, Despierta o Encender), mientras que 
	los reconocedores grandes o complejos pueden tener vocabularios de cientos de miles o más.
	
	\item [\textbullet] Exactitud
	
	La habilidad de un reconocedor puede ser examinada midiendo su exactitud, o qué tan bien reconoce los enunciados. Esto incluye no solamente identificar correctamente el enunciado pero también identificar si éste no se encuentra dentro de su vocabulario. Los buenos sistemas ASR (del inglés Automatic Speech Recognizers) tienen una exactitud del 98\% o más. La exactitud real de un sistema depende de la aplicación. 
	
	\item [\textbullet] Entrenamiento
	
	Algunos reconocedores de voz tienen la habilidad de adaptarse al orador. Cuando el sistema tiene tal habilidad, puede aceptar algún tipo de entrenamiento. Un sistema ASR es entrenado haciendo que el orador repita frases comunes o estándares y ajustando sus algoritmos de comparación para coincidir con esa persona en particular.
	\textbf{EL ENTRENAMIENTO TAMBIÉN PUEDE SER USADO POR PERSONAS QUE TIENEN DIFICULTADES DEL HABLA,  O PARA PRONUNCIAR CIERTAS PALABRAS}. Siempre y cuando el orador pueda repetir un enunciado, los sistemas ASR con entrenamiento pueden ser adaptados. 

\end{itemize}


	\subsection{Tipos de Reconocimiento de Voz}

	Los sistemas de reconocimiento de voz pueden ser separados en distintas clases según el tipo de enunciados o comandos que pueden reconocer. 
	Estas clases están basadas en el hecho que una de las dificultades de ASR es la habilidad para determinar cuándo la persona comienza y cuándo finaliza un comando.La mayoría de los paquetes pueden ser incluidos en más de una clase, dependiendo del modo en el que son utilizados.

\begin{enumerate}
\item Palabras Aisladas o Isolated Words
	
	Los reconocedores de palabras Aisladas usualmente requieren que cada enunciado tenga silencio (ausencia de una señal de audio) en AMBOS lados de la ventana de muestreo. No significa que acepte palabras únicas, pero sí requieren un único enunciado en un determinado tiempo. Muchas veces, estos sistemas tienen estados del estilo Escuchar/No-escuchar, donde requieren que el orador espere entre enunciados (hacen el procesamiento 
	durante las pausas). Enunciados Aislados sería un nombre más apropiado para esta clase. 
	
\item Palabras Conectadas
	
	Sistemas de palabras conectadas (o más correctamente 'connected utterances''enunciados conectados') son similares a la clase previa, pero 
	permiten separar enunciados para ser reconocidos juntos con una mínima pausa entre ellos.
	
\item Habla Continua (Continuous Speech)
	
	Reconocimiento continuo es el siguiente paso. Los reconocedores con capacidad de reconocimiento de habla continua son los más difíciles de crear dado que deben utilizar métodos especiales para detectar los límites de los enunciados. Estos reconocedores permiten a la persona hablar prácticamente de manera natural, mientras la computadora determina el contenido. Básicamente, es dictado.
	
\item Habla Espontánea
	
	Aquí parece haber una variedad de definiciones para lo que significa realmente Spontaneous Speech. A un nivel básico, puede pensarse como habla con voz natural y no ensayada. Un sistema ASR con esta habilidad debería ser capaz de manejar una variedad de características del habla natural tales como palabras que se ejecutan en conjunto, ums y ahs, e incluso ligeros tartamudeos.
	
\item	Identificación/Verificación de Voz
	
	Ciertos sistemas ASR tienen la habilidad de identificar usuarios específicos. En este trabajo no se explica con más detalle este tema (verificación para sistemas de seguridad). 
\end{enumerate}


	\subsection{Representación y Análisis de las señales de Voz}

El habla continua es un conjunto de señales de audio bastante complejo, lo que dificulta producirlas artificialmente. Estas s señales generalmente se consideran como \underline{armónicas} o \underline{no armónicas}, pero en algunos casos son algo entre estas dos. Los sonidos armónicos consisten en un frecuencia fundamental (F0) y sus componentes armónicos producidos por las cuerdas vocales. El tracto vocal modifica esta señal de excitación causando frecuencias formantes (polo) y no formantes(cero)(Witten 1982).Cada frecuencia formante tiene una amplitud y un ancho de banda, por lo que muchas veces se dificulta definir algunos de estos parámetros correctamente. La frecuencia fundamental y las frecuencias formantes son probablemente los conceptos MÁS IMPORTANTES dentro del Procesamiento de Voz. 

Con sonidos exclusivamente no armónicos, no hay una frecuencia fundamental en la señal de excitación, y por lo tanto tampoco hay una estructura armónica, por lo que la excitación puede considerarse como ruido blanco. El flujo de aire es forzado a través de la constricción del tracto vocal, fenómeno que puede ocurrir en numerosos lugares entre la glotis y la boca. Algunos sonidos son producidos con el detenimiento completo del flujo de aire seguidamente de una liberación repentina; esto produce una excitación turbulenta e impulsiva, en general, continuada de una excitación más turbulenta y prolongada.(Kleijn et al. 1998). Los sonidos no armónicos son generalmente más silenciosos y menos regulares que los armónicos. El murmullo es el caso especial del habla. Cuando se murmura un sonido armónico no hay frecuencia fundamental en la excitación y las frecuencias del primer formante producidas por el tracto vocal se perciben.

Si se observa la figura, las vocales (/a/ /e/ /i/ /o/ /u/) están representadas en el dominio tiempo-frecuencia.
% Figura Numeración de figuras?
\begin{figure}[h]
\begin{center}
\includegraphics[width=6in]{/home/paula/Escritorio/Tesis/Imagenes/vocales_espectro_paula.png}
\end{center}
\end{figure}


La frecuencia fundamental es aproximadamente 1200H Hz en todos los casos. Las frecuencias formantes F1, F2, F3 en la vocal /a/son alrededor de 450 Hz, 700 Hz, y 1000 Hz respectivamente. En la vocal /i/ los primeros 3 formantes son  450 Hz, 3000 Hz, y 4200Hz, y con /u/ tenemos 500 Hz, 800 Hz, y 1000 Hz. 


Para determinar la frecuencia fundamental o tono del habla, se puede utilizar un método denominado análisis cepstral. El Cepstrum se obtiene ventaneando en primer lugar y haciendo una DFT (Discrete Fourier Transform) a la señal y luego hacer el logaritmo del espectro de potencia para finalmente transformarlo nuevamente al dominio del tiempo mediante una IDFT (Inverse Discrete Fourier Transform). %FALTA FIGURA

El análisis Cepstral provee un método para separar la información del tracto vocal de la excitación. De este modo, la transformación en inversa puede ser llevada a cabo para dar un espectro de potencia más suavizado conocido como filtrado homomórfico.

	\subsection{Filtros}
			\subsubsection{Filtros Digitales}
Un filtro digital puede ser representado por dos vectores de parámetros, $a$ y $b$ cuyas longitudes son $p$ y $q$ respectivamente y el primer elemento de $a$ es siempre 1:

\begin{equation}
a = [1, a_{2}, ... a_{p}]
b = [b_{1}, b_{2}, ... b_{q}]
\end{equation}

Si aplicamos un filtro digital con los parámetros $a$ y $b$ a un flujo de una señal discreta x[n], la salida y[n] debería satisfacer la siguiente ecuación:

\begin{equation}
y[n] + a_{2}y[n-1] + a_{3}y[n-2] + ... + a_{p}x[n-p+1] = b_{1}x[n] + b_{2}x[n-1] + ... + b_{q}x[n-q+1]
\end{equation}

O de forma equivalente se puede expresar y[n] explícitamente:

\begin{equation}
y[n] = b_{1}x[n] + b_{2}x[n-1] + ... + b_{q}x[n-q+1] - a_{2}y[n-1] - a_{3}y[n-2] - ... - a_{p}x[n-p+1]
\end{equation}

Por ejemplo:

\begin{equation}
a = [1]
b = [1/5, 1/5, 1/5, 1/5, 1/5]
\end{equation}

La salida del filtro es

\begin{equation}
y[n] = (x[n] + x[n-1] + x[n-2] + x[n-3] + x[n-4])/5
\end{equation}

Este es un filtro digital simple con el que se obtiene y[n] como el promedio de los cinco puntos precedentes de las señales de entrada. De hecho es un filtro pasa bajos dado que luego de utilizar este operador la componente de alta frecuencia es promediada mientras que la componente de baja frecuencia es más o menos retenida. 

	\subsection{Usos y Aplicaciones}
	
	A pesar que cualquier tarea que involucre una interfaz con una computadora pueda utilizar ASR, las siguientes aplicaciones son las más comúnmente usadas.
	
\begin{itemize}

\item [\textbullet] Dictado/ Profesionales quienes realizan dictado
	
	El dictado es el uso más común para los sistemas de ASR. Esto incluye transcripciones médicas, dictado en el ámbito comercial y legal, así como también procesamiento de textos en general. En ciertos casos, vocabularios especiales son empleados para mayor precisión del sistema.

\item[\textbullet] Comando y Control
	
	Los sistemas ASR diseñados para realizar funciones y acciones en el sistema son definidos como sistemas de Comando y Control. Enunciados como \textquotedblleft Abrir FireFox\textquotedblright y \textquotedblleft Iniciar nueva terminal\textquotedblright simplemente harán lo especificado.

\item[\textbullet] Telefonía
	
	Algunos sistemas PBX(Private Branch Exchange)/Voice Mail permiten a las personas que llaman decir los comandos en vez de presionar los botones para enviar tonos específicos. 
	
\item[\textbullet] Portables

		Como las entradas son limitadas para los dispositivos portables, hablar es una posibilidad natural. 
	
\item[\textbullet] Personas con discapacidades


	Las personas con discapacidad son parte de la población que podría beneficiarse usando los programas de reconocimiento de voz. Es especialmente útil para personas que tiene dificultad o no pueden usar sus manos, debido a RSIs (Repetitive Stress Injuries) como el sindrome del túnel carpiano, o personas que debido a las discapacidades que presentan necesitan una \textcolor {blueviolet}{entrada alternativa} con la que puedan acceder a la computadora. De hecho, las personas que utilizan el teclado frecuentemente desarrollan RSIs, siendo la respuesta a este problema el reconocimiento de voz. El reconocimiento de voz se utiliza en la telefonía para personas hipoacúsicas, por ejemplo servicio de voz-a-correo de voz en texto, servicios de transmisión y teléfono "con subtítulos".
	
 
\item[\textbullet] Aplicaciones Embebidas/ Domótica y control remoto
	
	Los celulares modernos incluyen C\&C speech recognition (Comando y Control) que permite enunciados como 'Llamar a casa'. Esto podría ser un factor preponderante en el futuro de ASR y Linux. Por qué no puedo hablarle a mi TV aún?

\item [\textbullet] Autenticación de Usuario
 

\end{itemize}

\section{Hardware}


	\subsection{Tarjetas de Sonido}

Dado que el habla requiere un ancho de banda relativamente bajo, solamente cualquier tarjeta de sonido de 16 bit de mediana alta calidad hará el trabajo. Debes tener habilitado el sonido en el kernel y por supuesto tener los drivers correctos(controladores) instalados. 
La calidad de la tarjeta de sonido usualmente provoca una acalorada discusión sobre su impacto en la precisión y ruido.

Las tarjetas de sonido con las más "limpias" A/D (analog to digital) conversiones se recomiendan, pero más a menudo la claridad de la muestra digital es más dependiente de la calidad del micrófono y aún más dependiente del ruido ambiental. El ruido eléctrico de los monitores, slots pci, discos rígidos, etc. usualmente son despreciables comparados con los ruidos audibles que provienen de los ventiladores de la computadora, de las sillas (chirridos), o la respiración pesada o forzada.

Ciertos paquetes de software de ASR pueden requerir tarjetas de sonido específicas. Por lo general, y en mi opinión, es una muy buena idea apartarse de requerimientos de hardware específicos y condicionantes, porque limita muchas de tus futuras posibilidades, opciones y decisiones. Se debe pesar los beneficios y los costos si se están considerando paquetes que requieran hardware especial para funcionar apropiadamente.

			\subsubsection {Funcionalidades}

Las operaciones básicas que permiten las tarjetas de sonido convencionales son las siguientes:

\begin{itemize}
\item Grabación
La señal acústica procedente de un micrófono u otras fuentes se introduce en la tarjeta por los conectores. Esta señal se transforma convenientemente y se envía al procesador para su almacenamiento en un formato específico.

\item Reproducción

La información de onda digital existente en la máquina se envía a la tarjeta. Tras cierto procesado se expulsa por los conectores de salida para ser interpretada por un altavoz u otro dispositivo.

\item Síntesis

El sonido también se puede codificar mediante representaciones simbólicas de sus características (tono, timbre, duración...), por ejemplo con el formato MIDI. La tarjeta es capaz de generar, a partir de esos datos, un sonido audible que también se envía a las salidas.
Aparte de esto, las tarjetas suelen permitir cierto procesamiento de la señal, como compresión o introducción de efectos. Estas opciones se pueden aplicar a las tres operaciones.

\end{itemize}

			\subsubsection {Algunos componentes importantes}

\begin {itemize} 

\item Interfaz con placa madre

Sirve para transmitir información entre la tarjeta y el computador. Puede ser de tipo PCI, ISA, USB, etc.

\item Buffer

La función del buffer es almacenar temporalmente los datos que viajan entre la máquina y la tarjeta, lo cual permite absorber pequeños desajustes en la velocidad de transmisión. Por ejemplo, si la CPU no envía un dato a tiempo, la tarjeta puede seguir reproduciendo lo que tiene en el buffer; si lo datos llegan demasiado rápido, se van guardando. Lo mismo pasa en sentido inverso.

Muchos computadoras realizan la transmisión por DMA. Esto permite transportar los datos entre la tarjeta y la memoria directamente, sin la intervención de la CPU, lo cual le ahorra trabajo.

\item DSP

Procesador de señal digital. Es un pequeño microprocesador que efectúa cálculos y tratamientos sobre la señal de sonido, liberando así a la CPU de ese trabajo. Entre las tareas que realiza se incluye compresión (en la grabación) y descompresión (en la reproducción) de la señal digital. También puede introducir efectos acústicos tales como coros, reverberación, etc., a base de algoritmos.

Los DSP suelen disponer de múltiples canales para procesar distintos flujos de señal en paralelo. También pueden ser full-duplex, lo que les permite manipular datos en ambos sentidos simultáneamente.
\end{itemize}

	\subsection{PCMCIA - Adaptadores Bluetooth}
En computación, PC Card (originalmente Personal Computer Memory Card International Associations) es un factor de forma (estándar físico) de una interfaz periférica diseñada para computadoras portátiles. Originalmente era para la expansión de memoria, pero luego se extendió a otros dispositivos. Los más típicos suelen ser tarjetas de red, módems, discos duros y otros tipos de tarjetas de expansión como las PCMCIA Bluetooth. Sin embargo, actualmente hay otros dispositivos como los adaptadores USB Bluetooth o USB - Bluetooth Dongle que son mucho más prácticos y tienen tasas de transferencia de datos altas.


	\subsection{Micrófonos}

Un micrófono de calidad es fundamental cuando se utiliza ASR. En la mayoría de los casos, un micrófono de escritorio directamente no hará el trabajo. Tienen tendencia a tomar más el ruido ambiente, dándole problemas a los sistemas ASR.

Micrófonos de mano tampoco son la mejor elección dado que pueden resultar incómodos al tener que levantarlo todo el tiempo. Mientras que limitan la cantidad de ruido ambiental, son más útiles en aplicaciones que requieren cambio de oradores continuo, o cuando no se le habla al reconocedor frecuentemente. 

La mejor elección, y por lejos las más común es el estilo headset. Permite minimizar el ruido ambiente, a la vez que te permite tener el micrófono en la punta de la lengua todo el tiempo. Los headsets están disponibles sin o con los auriculares (mono o estéreo). Yo recomiendo los auriculares estéreo, pero es solamente una cuestión de gustos personales y tipo de aplicación.

Se pueden conseguir headsets de excelente calidad a través de la web en: \url{http://www.headphones.com} o \url{http://www.speechcontrol.com}

También la mayoría de las casas de venta de productos informáticos. En particular señalo que en el EmpireTech® tienen los últimos modelos en headsets inalámbricos.

Un rápida nota sobre niveles: No olvides subir el volumen de tu micrófono. Esto puede hacerse con un programa como el XMixer o OSS Mixer y debe utilizarse con cuidado para evitar el ruido de realimentación. Si el sistema de ASR incluye programas de auto ajuste, se recomienda utilizarlos ya que están optimizados para el sistema de reconocimiento en particular.


		\subsubsection{Micrófonos Bluetooth}
		
Bluetooth es la denominación del sistema de interconexión inalámbrica entre diferentes dispositivos electrónicos, como computadoras, teléfonos celulares, auriculares, etc. Permite la transferencia de datos entre dispositivos que lo soportan.
Es un estándar que fue creado por organizaciones de informática y telecomunicaciones, que significa "diente azul", apodo de un vikingo del siglo IX D.C.

Tipos de Bluetooth\\
Existen equipos Bluetooth clase 1, 2 y 3. Las diferencias existentes en las clases, sólo afectan al alcance de la comunicación inalámbrica. Los dispositivos clase 1 llegan a 100 metros, los de clase 2 lo hacen a 20 metros, mientras que los Bluetooth de tercera clase, poseen apenas un metro de alcance y son los que casi no se usan.



	\subsection{Computadoras y Procesadores}

Las aplicaciones de ASR son fuertemente dependientes de la velocidad de procesamiento. Esto se debe a la inmensa cantidad de filtrado digital y procesamiento de señales que toman lugar en ASR.

Casi como con cualquier software que usa intensivamente los recursos de la CPU, mientras más rápido mejor. También, mientras más memoria, mejor. Debido a los extensos diccionarios, patrones complejos de reconocimiento o tasas de muestreo altas no se debe pensar en menos de 400MHz y 128M RAM, siendo generosa en estos requerimientos. La mayoría de los paquetes de software tienen listados sus requerimientos mínimos.


\section{Software de Reconocimiento de Voz}


	\subsection{Software Libre y Gratuito}

La mayoría del software listado está disponible para descargar desde su página en sourceforge.net


		\subsubsection{XVoice}

XVoice es un reconocedor de voz continuo/ dictado que puede ser usado para una variedad de aplicaciones XWindow. Permite macros definidos por el usuario. Una vez configurado, actúa con una precisión adecuada. \textbf{(MÁS INFO)}

XVoice necesita que bajes e instales el IBM VIaVoice (libre) para Linux (Ver en Sección comercial de IBM). También requiere que la configuración de ViaVoice trabaje correctamente. Además Lesstif/Motif (libXm) se necesita. Asimismo es importante notar que debido a la interacción de este programa con XWindow, debes dejar los recursos de X abiertos en tu computadora, por lo que debes ser cuidadoso si lo empleas en una computadora en red o multiusuario. 

El software es en principio para usuarios.

Project:\url {http://xvoice.sourceforge.net}\\
Community:\url{http://www.onelist.com/community/xvoice}


		\subsubsection{CVoiceControl/kVoiceControl}
 
CVoiceControl (cuyo significado es Console Voice Control) comenzó su vida como KVoiceControl (KDE Voice Control). Es un sistema de reconocimiento de Voz básico que permite al usuario ejecutar comandos de Linux empleando comandos hablados. CVoiceControl reemplaza KVoiceControl.

El soft incluye una utilidad de configuración para el micrófono, un editor para vocabulario con el objetivo de agregar nuevos comandos y/o enunciados y el sistema de RV.

CVoiceControl es un excelente punto de inicio para usuarios experimentados que están buscando comenzar con ASR. No es el más amigable (user friendly), pero una vez entrenado apropiadamente, puede ser muy útil. Asegurarte de leer bien la documentación cuando lo configures.

Este software es principalmente para usuarios.

Homepage:\url{http://www.kiecza.net/daniel/linux}\\
Handbook:\url {http://www.kiecza.net/daniel/linux/cvoicecontrol/index-1.html}


		\subsubsection{Open Mind Speech}

Comenzado a fines de 1999, Open Mind Speech ha cambiado de nombres muchas veces (fue VoiceControl, luego SpeechInput, y luego FreeSpeech), y ahora es parte de 'Open Mind Initiative'. Esto es un proyecto open source. Actualmente no es completamente funcional y es para desarrolladores.

Este software es principalmente para desarrolladores.

Homepage: \url{http:\\freespeech.sourceforge.net}


		\subsubsection{GVoice}

GVoice es una librería de ASR que utiliza IBM ViaVoice (free) SDK para controlar aplicaciones de Gtk/GNOME. Incluye librerías para inicialización, motor de reconocimiento, manipulación de vocabulario y panel de control.

Este software es principalmente para desarrolladores.\\
Homepage: \url{http://www.cse.ogi.edu/~omega/gnome/gvoice/}


		\subsubsection{ISIP}

Este instituto (Institute for Signal and Information Processing) en Mississippi State University ha hecho disponibles su motor de reconocimiento de voz. El toolkit incluye un front-end, un decodificador, un módulo de entrenamiento. Es un toolkit funcional.

Este software es principalmente para desarrolladores.

El toolkit (y más información sobre ISIP) disponible en: \url{http://www.ece.msstate.edu/research/isip/projects/speech/}


		\subsubsection {CMU Sphinx}

Sphinx originalmente comenzó en CMU (Carnegie Mellon University) y alrededor del año 2000 fue liberado como open source. Este es un programa considerablemente grande que incluye numerosas herramientas e información. Incluye entrenadores, reconocedores, modelos acústicos, modelos lingüísticos y documentación.

La siguiente cita ha sido extraída del homepage del proyecto (en inglés).
\begin{quotation}

Debe notarse que Sphinx no es un producto final. Aquéllos con un cierto nivel de pericia pueden lograr grandes resultados con las versiones disponibles de Sphinx, pero un usuario normal e ingenuo ciertamente necesitará más ayuda. En otras palabras, el software disponible aquí no es pensado para usuario sin experiencia en SR, sino para un usuario experto.
\end {quotation}
Homepage: \url{http://cmusphinx.sourceforge.net/html/cmusphinx.php}\\
Sourceforge: \url{ http://sourceforge.net/projects/cmusphinx}\\
Download: \url{http://sourceforge.net/project/platformdownload.php?group_id=1904&sel_platform=7113}\\
Repositorio de Subversion: svn co \url{https://cmusphinx.svn.sourceforge.net/svnroot/cmusphinx cmusphinx} 


		\subsubsection{NICO ANN Toolkit}

El toolkit NICO Artificial Neural Network es una red neuronal cuyo aprendizaje es por minimización del error (backpropagation model) optimizado para aplicaciones de RV.

Homepage: \url{http://nico.nikkostrom.com/}


		\subsubsection{Jialong He's Speech Recognition Research Tool}

A pesar de no haber sido escrito para Linux originalmente, esta herramienta de investigación puede ser compilada en Linux. Contiene tres diferentes tipos de reconocedores: DTW, Dynamic Hidden Markov Model, y Continuous Density Hidden Markov Model. Esto es para uso en I+D.

Este software es principalmente para desarrolladores.\\

\url{http://www.speech.cs.cmu.edu/comp.speech/Section6/Verification/jialong.html}


		\subsection{Más Software Libre}



Las siguientes es una lista de los proyectos actuales que tratan de implementar el Reconocimiento de Voz en Linux. (Marzo 2008)
\begin{itemize}
\item VoxForge
\item Julius
\item HTK (copyright de Microsoft, sin embargo el código está disponible para uso personal)
\item GnomeVoiceControl \url{http://live.gnome.org/GnomeVoiceControl}
\item Simon ( Este proyecto tiene como objetivo ayudar a las personas ciegas; requiere Julius)
\end{itemize}


		\subsection{Software Comercial}

			\subsubsection{IBM ViaVoice}

IBM ha hecho realidad la promesa de soporte para Linux con su serie de productos ViaVoice para Linux.
Su producto comercial (no-libre) IBM ViaVoice Dictation for Linux (disponible en: \url{http://www-01.ibm.com/software/pervasive/embedded_viavoice}) tiene un muy buen rendimiento, pero tiene algunos requerimientos de sistema considerables comparado con los sistemas de ASR básicos. Permite múltiples usuarios (no lo he probado para múltiples usuarios). El paquete contiene documentación (PDF), entrenador, sistema de dictado e scripts de instalación. 

	El ASR SDK (Software Development Kit) está disponible y es gratis; incluye IBM SMAPI, grammar API, documentación, y una variedad de programas de muestra. El ViaVoice Run Time Kit provee un motor ASR  y archivos de datos para funciones de dictado, y utilidades de usuario. El ViaVoice Command \& Control Run Time Kit incluye el motor ASR y archivos de datos para las funciones de control y comandos y utilidades de usuario. 

SDK para uso con el TTS de IBM en aplicaciones de software libre.
George Kraft, desarrollador de accesibilidad en IBM ha publicado un SDK bajo una licencia CPL para usar en aplicaciones de software libre como Gnome-speech, junto un runtime (comercial) de IBM viavoice para Linux.
Se proporcionan únicamente las interfaces necesarias para que las aplicaciones puedan ser compiladas y distribuidas libremente y así se puedan instalar/distribuir en distribuciones de GNU/Linux. Posteriormente es necesario comprar un runtime de ViaVoice para Linux, que sería como comprar un sintetizador de voz para trabajar con nuestro software que soporte esta opción.
Esto me hace pensar que en realidad no es un ViaVoice "libre" para GNU/Linux.



		\subsubsection {Babel Technologies}

Babel Technologies tiene un SDK para Linux disponible, llamado Babear. Es un sistema speaker-independent basado en Modelos de Markov híbridos y Redes Neuronales Artificiales. Tienen también una variedad de productos Text-to-speech, verificación de  identidad y análisis de fonemas.

Más información disponible en: \\ \url{http://www.babeltech.com. o http://www.acapela-group.com/}

		\subsubsection {Nuance - Dragon Natural Speaking}


Nuance ofrece un producto de reconocimiento de voz/ lenguaje natural (actualmente versión Dragon Naturally Speaking 10). Maneja un gran vocabulario y utiliza una arquitectura distribuida única para la escalabilidad y la tolerancia de errores.
No existe una versión para Linux. Tampoco corre en arquitectura de 64 bits.

Más información disponible en:\url{http://www.nuance.com}

		\subsubsection{Abbot/AbbotDemo}

Abbot es un sistema de ASR , independiente de la persona que habla, con un amplio vocabulario. Fue originalmente desarrollado por el Connectionist Speech Group de la Cambridge University. Luego, fue transferido (comercializado) a SoftSound. 

Más información disponible: \url{http://www.softsound.com}

AbbotDemo es un paquete de demostración de Abbot. Este sistema demo tiene un vocabulario de aproximadamente 5000 palabras y usa el algoritmo de HMM para habla continua. Es un programa de prueba sin código disponible.


		\subsection {Más Productos Comerciales}

			\subsubsection{Bytescribe Speech Recognition}

Bytescribe integra speech recognition y dictado por teléfono. \url{www.bytescribe.com}

			\subsubsection{CSLU Toolkit}

			\subsubsection{MacSpeech Dictate}
	Mac OS X reconocimiento de voz utilizando el motor de Dragon NaturallySpeaking. Reemplaza al MacSpeech's producto de iListen que estaba basado en Philips Speech Technology.

			\subsubsection{Microsoft Speech API} Función de reconocimiento de voz incluida como parte de Microsoft Office y en las Tablet PCs que corren con Microsoft Windows XP Tablet PC Edition. También puede bajarse como parte de Speech SDK 5.1 para aplicaciones de Windows, pero como está apuntado para desarrolladores que construyen aplicaciones de voz, le falta totalmente un interfaz de usuario, haciéndolo poco atractivo para los usuarios finales. Windows Vista incluye la versión 8.0 del motor de Reconocimiento de Voz de Microsoft junto con una nueva experiencia en este campo, conocida como Windows Speech Recognition.

			\subsubsection{Philips SpeechMagic} El líder del mercado dentro de la industria médica de acuerdo a algunos autores, Philips SpeechMagic es un motor de reconocimiento que puede correr como un producto stand-alone o integrado a otras aplicaciones.

			\subsubsection{Proteus Conversational Interface}
			\subsubsection{Tellme Networks}

\section {Software TTS}

		\subsection{eSpeak}

eSpeak es un software sintetizador de voz para Inglés y otros idiomas, tanto para Linux y Windows \url{http://espeak.sourceforge.net}

eSpeak suena un poco diferente a otros sintetizadores, tal vez no tan natural y 'suave' pero creo que la articulación de los fonemas es mucho más clara y fácil de escuchar durante períodos largos. 

\begin{itemize}

\item Incluye diferentes Voces, cuyas características pueden alterarse.
\item Puede producir un archivo de salida con la voz sintetizada en formato WAV.
\item Soporta SSML (Speech Synthesis Markup Language) y también HTML.
\item Tiene un tamaño reducido. El programa con todos los datos, incluyendo varios idiomas, ocupa alrededor de 700 kbytes.
\item Puede traducir texto a código de fonemas, por lo cual puede adaptarse como front end para otros motores de reconocimiento de voz.
\item Gran potencial para otros idiomas. Se incluyen varios en distintas etapas de progreso. 
\item Herramientas disponibles para el desarrollo y mejoramiento de los datos de los fonemas.
\item Escrito en C++. 
\end{itemize}


Se puede utilizar para escuchar los blogs o los sitios de noticias. 
\begin{itemize}

\item Versión para Windows 
Existen las versiones de Windows SAPI5  y de línea de comando. La versión SAPI5 puede usarse con lectores de pantalla como el NVDA, JAWS, Supernova, y Window-Eyes.
Los instaladores están disponibles en la página de descargas de eSpeak.
Una versión de Windows espeakedit también está disponible.

\item Idiomas
eSpeak realiza TTS para los siguientes idiomas, algunos mejores que otros. Afrikaans, Cantonese, Croatian, Czech, Dutch, English, Esperanto, Finnish, French, German, Greek, Hindi, Hungarian, Icelandic, Italian, Lojban, Macedonian, Mandarin, Norwegian, Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Spanish, Swahili, Swedish, Vietnamese, Welsh.

\item espeakedit es un programa con GUI utilizado para preparar y compilar los datos de fonemas. Está disponible para descargar.  

\end{itemize}

		\subsection{Emacspeak}

Emacspeak es una interfaz de voz que permite a los usuarios e internautas con discapacidades visuales a interactuar independientemente y eficientemente con sus computadoras. El formato de audio y el soporte completo para W3C's Aural CSS (ACSS) permite a Emacspeak producir presentaciones de información electrónica ricas en contenido aural. Logrando la combinación armónica de todos los aspectos de Internet, como navegar por la Web y mensajería. Emacspeak brinda voz a información local y remota vía una interfaz con el usuario consistente y bien integrada. Disponible gratuitamente en Internet, Emacspeak ha cambiado drásticamente cómo cientos de usuarios ciegos y disminuidos visuales alrededor del mundo interactúan con sus PCs e Internet. Un vasta cantidad de herramientas provee acceso a un escritorio con audio y a la, siempre en evolución, semántica WWW. Cuando se combina con Linux y un hardware de bajos recursos, Emacspeak/Linux provee una solución confiable, estable y amigable al usuario.

		\subsection{Festival}

\begin{itemize}
\item Nombre: Festival Speech Synthesis System.
\item Versión: 1.95
\item Idiomas: Inglés americano y británico, español, alemán, francés, italiano, checo, además de todos los idiomas proporcionados por las voces de MBROLA.
\item Licencia: GPL
\item \url {URL: http://www.cstr.ed.ac.uk/projects/festival}
\end{itemize}

		\subsection{freeTTS}

\begin{itemize}
\item Nombre: FreeTTS (Un motor de síntesis de voz escrito totalmente en Java)
\item Versión: 1.2
\item Idiomas: Inglés, con numerosas voces. Posibilidad de importar voces de MBROLA.
\item Licencia: GPL
\item \url {URL: http://freetts.sourceforge.net} 
\end{itemize}

		\subsection{Flite}

\begin{itemize}
\item Nombre: Flite (Síntesis de voz ligera para dispositivos con pocos recursos basada en Festival).
\item Versión: 1.2
\item Idiomas: Inglés, incluye una voz basada en Kal (de Festival).
\item Licencia: GPL
\item URL: http://www.speech.cs.cmu.edu/flite/ 
\end{itemize}

		\subsection{Multispeech}
\begin{itemize}
\item Nombre: Multispeech
\item Idiomas: Portugués de brasil, inglés, francés, español, ruso.
\item Licencia: Sin determinar, aunque el código es opensource.
\item URL: ftp://ftp.rakurs.spb.ru/pub/Goga/projects/speech-interface/current 
\end{itemize}

		\subsection{Loquendo TTS}

\begin{itemize}
\item Nombre: Loquendo TTS (Voces de alta calidad)
\item Versión: 6.7
\item Idiomas: Español, inglés /US y UK), Alemán, Italiano, Francés, sueco.....
\item Licencia: Propietaria
\item URL: http://www.loquendo.com 
\end{itemize}

		\subsection{TTSynth}

\begin{itemize}
\item Nombre: TTSynth (El inmejorable Viavoice para Linux)
\item Versión: 6.7
\item Idiomas: Español, español de México, inglés US y UK, francés, francés de Canadá, alemán, chino simplificado y tradicional, finlandés, portugués, italiano y japonés!
\item Licencia: Propietaria
\item URL: http://www.ttsynth.com 
\end {itemize}

	\subsection {Lenguajes de etiquetas para síntesis de voz}

Hay un cierto número de lenguaje de etiquetas para la interpretación de texto como voz de acuerdo con XML. El más reciente es SSML, propuesto por el W3C, que tiene actualmente categoría de borrador. Otros lenguajes de etiquetas de aparición anterior son SABLE y JSML. Aunque cada uno fue propuesto como un nuevo estándar, ninguno ha sido ampliamente adoptado.

\section{Dentro  del Reconocimiento de Voz}

	\subsection{Cómo trabajan los Reconocedores}

Los sistemas de Reconocimiento pueden dividirse en dos grandes grupos. 1) Los Sistemas de Reconocimiento de Patrones trabajan comparando con patrones conocidos/entrenados y luego determinan si hubo coincidencia; 2) Sistemas Acústicos Fonéticos usan conocimientos del cuero humano (producción del habla y audición) para comparar características del habla (fonética, por ejemplo los sonidos de las vocales). Los sistemas más modernos se enfocan en el reconocimiento de patrones ya que combina armónicamente con las técnicas computacionales actuales y tiende a presentar una precisión más elevada.

La mayoría de los reconocedores puede desglosarse en los siguientes pasos:

\begin{enumerate}
\item Grabación de Audio y Detección de Enunciados.
\item Pre-filtrado (pre-énfasis, normalización, banding, etc.)
\item Encuadre y Ventaneo (cortar los datos en formato usable)
\item Filtrado (filtrado extensivo para cada ventana/porción/ banda de frecuencia)
\item Comparación y Semejanza (Matching) (reconocer el enunciado)
\item Acción (Ejecutar la función asociada con el patrón reconocido) 
\end{enumerate}

A pesar que cada paso parece simple, cada uno involucra múltiples y diferentes técnicas (muchas veces completamente opuestas).

\begin{enumerate}

\item \textbf{Grabación de Audio y Detección del enunciado:} Se puede lograr de numerosas formas. Los puntos de inicio pueden encontrarse comparando los niveles de ruido ambiente (energía acústica en algunos casos) con la muestra grabada. La detección de punto final es más difícil porque las personas que hablan tienden a dejar "artefactos" tales como respiración, suspiros, castañeo de dientes y ecos.

\item \textbf{Pre-filtrado:} se logra con una variedad de maneras, dependiendo de otras características del sistema de reconocimiento. Los métodos más comunes son el método de "Banco de Filtros" el cual utiliza una serie de filtros de audio para preparar la muestra, y el método de LPC (Linear Predictive Coding) el cual usa una función de predicción para calcular diferencias (errores). Diferentes formas de análisis espectrales también son usadas.

\item \textbf{Encuadre y Ventaneo:} involucra la separación del los datos de la muestra en tamaños específicos. Esto usualmente está entre el paso 2 y el paso 4. Este paso también incluye la preparación del los límites de las muestras para análisis.

\item \textbf{Filtrado Adicional:} No siempre está presente. Es la preparación final para cada ventana, previamente a la comparación y coincidencia. En general, consiste de alineamiento temporal y normalización. 

Existen un gran número de técnicas disponibles para el siguiente paso

\item \textbf{Comparación y Semejanza:} La mayoría compara la ventana actual con muestras conocidas. Hay métodos que usan Hidden Markov Models (HMM), análisis de frecuencia, análisis diferencial, técnicas de álgebra lineal, distorsión espectral y métodos de distorsión temporal. Todos estos métodos s usan para generar una probable y precisa coincidencia entre muestra y patrón.

\item \textbf{Acciones:} Puede ser casi cualquier cosa que el desarrollador quiera hacer.	

\end{enumerate}


	\subsection{Bases de Audio Digital}


Audio es inherentemente un fenómeno analógico. La grabación de una muestra digital es posible realizarla convirtiendo la señal analógica a una señal digital a través de un conversor A/D en la tarjeta de sonido. Cuando un micrófono está funcionando, las ondas de sonido producen la vibración del elemento magnético en el micrófono, causando que circule una corriente eléctrica a la tarjeta de sonido (los altoparlantes funcionan a la inversa). Básicamente, el conversor A/D graba los valores del voltaje a intervalos determinados.

Hay dos factores importantes durante este proceso. En primer lugar está la frecuencia de muestreo (sample rate), o en palabras más simples, con qué frecuencia se graban los valores de voltaje. En segundo lugar está la cantidad de "bits por muestra" (bps), o qué tan preciso es el valor grabado. Un tercer punto es el número de canales (mono o estéreo), pero para la mayoría de las aplicaciones de ASR con un canal es suficiente. Muchas aplicaciones usan valores predefinidos para estos parámetros y el usuario no debería cambiarlos a menos que la documentación del software así lo sugiriera. Los desarrolladores deben experimentar con distintos valores con el objetivo de determinar cuáles trabajan mejor son sus algoritmos. 

Entonces, cuál es la frecuencia de muestreo para una aplicación de RV?. Dado que el habla tiene un ancho de banda relativamente bajo (aproximadamente entre 100Hz-8kHz), 8000 muestras/seg (8kHz) es suficiente para la mayoría de los sistemas ASR. Sin embargo, algunos prefieren 16000 muestras/seg (16kHz) puesto que brinda información más precisa en las altas frecuencias. Si se posee el poder de procesamiento (si el hardware acompaña) es preferible 16 kHz. Frecuencias de muestreo arriba de 22KHz so un desperdicio.

Luego, cuál un valor óptimo para "bits por muestra"? 8 bits por muestra grabarán valores entre 0 y 255, lo cual significa que la posición del elemento del micrófono está en una de 256 posiciones posibles. 16 bits por muestra divide la posición del elemento en 65536 valores posibles. Algo similar a la frecuencia de muestreo, si se tiene la capacidad de memoria y potencia en el procesamiento es mejor 16 bits por muestra.

El formato de codificado debe ser simple, se deben guardar los datos en crudo (raw data). 


\section{Propuesta para Ingeniería en Rehabilitación}

	\subsection{Identificación de la población de usuarios}

\begin{enumerate}
\item\underline{Deficiencias mentales}

\begin{itemize}
\item{Retraso madurativo}
Niños con un desarrollo psíquico inferior a lo normal, hasta la edad de 14 años, pudiendo observarse en ellos
problemas de conducta y aprendizaje debido a su nivel madurativo.\\
\item{Retraso mental leve y límite}
Personas con un C.I. de 50-80. Los adolescentes pueden adquirir habilidades prácticas y conocimientos académicos
hasta el nivel de 6º de EGB o de Primaria. Las personas con retraso leve son capaces de adquirir una independencia mínima
con sus habilidades sociales y/o laborales y las personas con un C.I. cercano al límite superior, pueden alcanzar una
independencia casi total.
\end{itemize}

\item {Deficiencias visuales}
Se refiere a personas con deficiencias funcionales del órgano de la visión y de las estructuras y funciones asociadas incluidos
los párpados.
\begin{itemize}
\item{Ceguera total}
Personas que no tienen percepción de luz en ninguno de los ojos.
\item{Mala visión}
Se refiere a personas con deficiencia de agudeza visual moderada o grave, o que presentan deficiencias de campo
visual moderadas o graves.
\end{itemize}

\item \underline {Deficiencias del oído}
Personas con deficiencias de funciones y estructuras asociadas al aparato de la audición.

\begin{itemize}
\item Sordera prelocutiva
Se refiere a personas con sordera, previa a la adquisición del lenguaje (niños). Incluye la sordomudez cuya mudez se ha
presentado como consecuencia de una sordera prelocutiva.
\item{Sordera postlocutiva}
Se refiere a personas con sordera que se presenta después de la adquisición del lenguaje (adultos) con pérdida total de
audición y que no pueden beneficiarse del uso de prótesis auditivas.
\item{Mala audición}
Se refiere a personas con diferentes niveles de pérdida auditiva: moderada (45-50 db), grave (71-91 db), profunda (>91 db).
Pueden beneficiarse del uso de prótesis auditivas.
\end{itemize}	

\item\underline{Deficiencias del lenguaje, habla y voz}
Personas con deficiencias de comprensión y/o elaboración del lenguaje, la producción y/o emisión del habla, y los
trastornos de la voz.
\begin{itemize}
\item Mudez (no por sordera)
Se refiere a personas cuyos organos fonadores son normales, pero son mudas como consecuencia de lesión cerebral en los
centros del lenguaje, trastornos mentales, ciertos casos de autismo, etc.
\item Habla dificultosa o incomprensible
Se refiere a personas con secuelas graves del lenguaje como afasias, disfasias, disartrias, disfonias, disfemias, etc. producidas por lesiones en la región cerebral del lenguaje, por ejemplo ACV (accidente vascular cerebral), TCE (traumatismo
craneoencefálico), trastornos de lenguaje asociados a demencias, retrasos mentales, etc.
Los ACV son el nombre genérico que se da a ciertas enfermedades cerebrales de origen vascular. Estas pueden ser hemorragia
cerebral, trombosis cerebral y embolia cerebral

Afasia: Defecto o pérdida de la capacidad de expresarse por palabras, por escrito o por signos, o de comprender el lenguje
escrito o hablado por lesión o enfermedad de centros cerebrales. Existen muchos tipos de afasias. Disartria: Articulación
imperfecta del habla, por trastorno del control muscular que resulta por daño en el sistema nervioso. Disfonía: Perturbación de
la intensidad, tono y timbre de la voz. Disfemia: Tartamudez.
\end{itemize}

\item \underline{Deficiencias osteoarticulares}
\begin{itemize}
\item Extremidades superiores
Personas con anomalías congénitas y/o adquiridas del hombro, brazos, manos (ausencias, defectos longitudinales, transversales de los huesos), defectos articulares (anquilosis, defectos de función, etc.).
\end{itemize}

\item \underline{Deficiencias del sistema nervioso}
Personas con anormalidades graves de las estructuras y/o funciones del sistema nervioso central y sistema nervioso periférico (sea cual sea la causa: malformaciones, infecciones, tumores, etc.) que afectan al sistema muculoesquelético y articulaciones

\begin{itemize}
\item Tetraplejia
Se refiere a personas con pérdida total de la función motórica de las cuatro extremidades. Se incluye también la pérdida parcial o tetraparesia. 
\end{itemize}
\end{enumerate}

La síntesis de voz y el reconocimiento de voz a sido desde hace tiempo una herramienta tecnológica de asistencia. Permiten remover barreras ambientales para estas personas que presentan alguna deficiencia o discapacidad. La aplicación más difundida es el uso de lectores de pantalla para personas con impedimento visual; sin embargo ahora los sistemas text-to-speech son empleados por personas con dislexia y otros tipos de dificultades de aprendizaje, así como también los niños en edad preescolar. Se utilizan muchos ambos sistemas como medio de comunicación.

	\subsection{Equipos Disponibles}

Intel Pentium velocidades entre 60 y 133 MHz.
El Pentium Pro. Tenía una caché desde 256 KB hasta 512 KB en el encapsulado. Velocidades133 MHz hasta los 200 MHz.
El Pentium II funcionan a una frecuencia de reloj de entre 166 y 450 MHz. La velocidad de bus era originalmente de 66 MHz, pero en las versiones a partir de los 333 MHz se aumentó a 100 MHz.
Memoria RAM DDR 64MB y 128MB 
Memoria Física mayor a 1Gb.

	\subsection{Selección de Software}

Lo más indicado para computadoras de bajos recursos es un sistema operativo basado en UNIX, con paquetes de Software como Festival, Emacspeak o Flite con respecto a tecnologías TTS.
Para el caso de STT o reconocedores de Voz  se necesita como mínimo un procesador equivalente a un Pentium II o superior con 400 Mhz de clock y memoria RAM  mayor a 128 MB. Se necesita ver para cada equipo qué software es el ideal.
 

\section{Publicaciones}
%Si hay alguna publicación que no esté en la lista y piensas que debería estar, por favor envíame esa información a: \textbf{pau.sleon@gmail.com}

	\subsection{Libros}

\begin{itemize}

\item "Fundamentals of Speech Recognition". L. Rabiner \& B. Juang. 1993. ISBN: 0130151572.
\item "How to Build a Speech Recognition Application". B. Balentine, D. Morgan, and W. Meisel. 1999. ISBN: 0967127815.
\item "Speech Recognition : Theory and C++ Implementation". C. Becchetti and L.P. Ricotti. 1999. ISBN: 0471977306.
\item "Applied Speech Technology". A. Syrdal, R. Bennett, S. Greenspan. 1994. ISBN: 0849394562.
\item "Speech Recognition : The Complete Practical Reference Guide". P. Foster, T. Schalk. 1993. ISBN: 0936648392.
\item "Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics and Speech Recognition". D. Jurafsky, J. Martin. 2000. ISBN: 0130950696.
\item "Discrete-Time Processing of Speech Signals (IEEE Press Classic Reissue)". J. Deller, J. Hansen, J. Proakis. 1999. ISBN: 0780353862.
\item "Statistical Methods for Speech Recognition (Language, Speech, and Communication)". F. Jelinek. 1999. ISBN: 0262100665.
\item "Digital Processing of Speech Signals" L. Rabiner, R. Schafer. 1978. ISBN: 0132136031
\item "Foundations of Statistical Natural Language Processing". C. Manning, H. Schutze. 1999. ISBN: 0262133601.
\item "Designing Effective Speech Interfaces". S. Weinschenk, D. T. Barker. 2000. ISBN: 0471375454. 
\item Bibliografía online: Institut Fur Phonetik: \htmladdnormallink{http://www.informatik.uni-frankfurt.de/~ifb/bib\_engl.html}{http://www.informatik.uni-frankfurt.de/~ifb/bib\_engl.html}
\end{itemize}

	\subsection{Internet}

\begin{itemize}

\item Bibliografía Online
Bibliografía Online de Publicaiones sobre Tecnología de Fonéticay Voz. \htmladdnormallink{http://www.informatik.uni-frankfurt.de/~ifb/bib\_engl.html}{http://www.informatik.uni-frankfurt.de/~ifb/bib\_engl.html} 

\item Página del MIT Spoken Language Systems
\htmladdnormallink{http://www.sls.lcs.mit.edu/sls/}{http://www.sls.lcs.mit.edu/sls/} 

\item Oregon Graduate Institute
Center for Spoken Language Understanding at Oregon Graduate Institute. Excelente para desarrolladores e investigadores. \htmladdnormallink{http://cslu.cse.ogi.edu/}{http://cslu.cse.ogi.edu/} 

\item IBM's ViaVoice Linux SDK
\htmladdnormallink{http://www-4.ibm.com/software/speech/dev/sdk\_linux.html}{http://www-4.ibm.com/software/speech/dev/sdk\_linux.html} 



\item Para usuarios de Windows. \htmladdnormallink{http://www.out-loud.com}{http://www.out-loud.com} 

\end{itemize}

%COMENTARIOS LEGALES DE DOCUMENTO EN INGLÉS´ES
%1. Legal Notices
%1.1. Copyright/License

%Copyright (c) 2000-2002 Stephen C. Cook. Permission is granted to copy, distribute, and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation.

%This document is made available under the terms of the GNU Free Documentation License (GFDL), which is hereby incorporated by reference.
%1.2. Disclaimer

%The author disclaims all warranties with regard to this document, including all implied warranties of merchantability and fitness for a certain purpose; in no event shall the author be liable for any special, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortious action, arising out of or in connection with the use of this document.
%1.3. Trademarks

%All trademarks contained in this document are copyright/trademark of their respective owners.
%2. Forward
%2.1. About This Document

%This document is targeted at the beginner to intermediate level Linux user interested in learning about Speech Recognition and trying it out. It may also help the interested developer in explaining the basics of speech recognition programming.

%I started this document when I began researching what speech recognition software and development libraries were available for Linux. Automated Speech Recognition (ASR or just SR) on Linux is just starting to come into its own, and I hope this document gives it a push in the right direction - by supporting both users and developers of ASR technology.

%I have left a variety of SR techniques out of this document, and instead I have focused on the "HOWTO" aspect (since this is a howto...). I have included a Publications section so the interested reader can find books and articles on anything not covered here. This is not meant to be a definitive statement of ASR on Linux.

%For the most recent version of this document, check the LDP archive, or go to: http://www.gear21.com/speech/index.html.

%2.3. Comments/Updates/Feedback

%If you have any comments, suggestions, revisions, updates, or just want to chat about ASR, please send an email to me at scook@gear21.com.
%2.4. ToDo
%The following things are left "to do":
%*Add descriptions in the Publications section.
%*Add more books to the Publications section.
%*Add more links with descriptions.
%*Enhance the description of the ASR system steps
%*Include descriptions of FFTs and Filters.
%*Include descriptions of DSP principles. 

%2.5. Revision History
%v0.1 first rough draft - August 2000
%v0.5 final draft - September 2000
%v1.0 First translated draft - July 2008
%v1.5 Final translated draft - July 2008
%v2.0 Extended draft August - 2008
%v2.1













%http://sunshine35446.yuku.com/directory Friends International Support Group (aka Friends) is an internet forum using the yuku message board software, in which members support each other while living with chronic pain.





%Paleta de colores
%\textcolor{mediumspringgreen}{mediumspringgreen}{rgb}{0,0.98,0.6} % color verde primavera
%\textcolor{navyblue}{navyblue}{rgb}{0,0,0.5}
%\textcolor{cornflowerblue}{cornflowerblue}{rgb}{0.39,0.58,0.93}
%\textcolor{steelblue}{steelblue}{rgb}{0.27,0.51,0.71}
%\textcolor{royalblue2}{royalblue2}{rgb}{0.26,0.43,0.93}
%\textcolor{royalblue3}{royalblue3}{rgb}{0.23,0.37,0.8}
%\textcolor{royalblue4}{royalblue4}{rgb}{0.15,0.25,0.55}
%\textcolor{dodgerblue2}{dodgerblue2}{rgb}{0.11,0.53,0.93}
%\textcolor{dodgerblue3}{dodgerblue3}{rgb}{0.09,0.45,0.8}
%\textcolor{dodgerblue4}{dodgerblue4}{rgb}{0.06,0.31,0.55}
%\textcolor{steelblue1}{steelblue1}{rgb}{0.39,0.72,1}
%\textcolor{steelblue2}{steelblue2}{rgb}{0.36,0.67,0.93}
%\textcolor{steelblue3}{steelblue3}{rgb}{0.31,0.58,0.8}

\end{document}
